Esta pregunta ya tiene respuestas aquí: Express js - no se puede redireccionar (4 respuestas) Cerrado hace 7 años. Estoy usando passportjs con un middleware a continuación. Se supone que debe verificar si el usuario está conectado cuando solicita ciertas cosas. Si no ha iniciado sesión, debería ser redirigido a la página de inicio de sesión. Tengo una ruta de solicitud de la siguiente manera: app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update); Esta ruta se llamará cuando el usuario intente actualizar un recurso llamado Fantasy Team en el sitio web. auth.requiresLogin es un middleware de la siguiente manera: ports.requiresLogin = function (req, res, next) { if (req.isAuthenticated ()) { volver siguiente () } return res.redirect ("/ signin"); }; Después de iniciar sesión en mi usuario, simulé el vencimiento de la sesión eliminando la cookie de sesión. A partir de entonces, a través del sitio web, hice una solicitud PUT '/ fantasyteams / 123' para actualizar el equipo de fantasía número 123. fantasyteams.update es simplemente una operación de guardado de mongodb / mongoose: exportaciones.update = función (req, res) { var fantasyteam = req.fantasyteam; fantasyteam = _.extend (fantasyteam, req.body); fantasyteam.save (function (err) { res.jsonp (equipo de fantasía); }); }; Como se esperaba, el controlador de ruta (app.put ...) de arriba capturó la solicitud, pásala al middleware auth.requiresLogin para verificar si el usuario inició sesión. Por lo tanto, resulta que el usuario no inició sesión desde que eliminé su cookie de sesión. res.redirect se llama como se esperaba. Sin embargo, el sitio web no redirige a la página de inicio de sesión. Veo esto en los registros de comandos de node.js: PUT / inicio de sesión 404 328ms ¿Qué hice mal?
2021-02-25 08:21:45
Parece que el problema es que no tiene un controlador de ruta para PUT / signin. La solicitud original era una venta, por lo que cuando se redirecciona, sigue siendo parte de la misma solicitud de venta del navegador. Simplemente agregue un controlador para poner / publicar / cualquier cosa con app.all ('/ signin') 3 | No es la respuesta que estás buscando? Explore otras preguntas etiquetadas cookies de sesión node.js express passport.js o haga su propia pregunta.